perm filename PUPRTE.PAL[11,HE] blob sn#656324 filedate 1982-04-29 generic text, type T, neo UTF8
; Copyright Xerox Corporation 1979

.TITLE PUPRTE
; PUPRTE.BPL -- MODULE IMPLEMENTING THE PUP ROUTING TABLE

.CSECT GLOBAL
G=.

.CSECT

; ENTRY POINT TO INITROUTINGTABLE
LA1:
	SUB @(6),%0
	MOV %7,@%0
	MOV (6)+,-(0)
	MOV %0,%5
	MOV %1,-(5)
	MOV #000201,%2
	MOV -2.(0),%1
	JSR %7,@G+256.
	000004
	MOV %1,G+414.
	MOV G+414.,%1
	INC %1
	MOV #000004,%2
	MUL #000040,%2
	MOV #177777,%2
	JSR %7,@G+208.
	000004
	MOV G+414.,%1
	ASL %1
	MOV #000005,(1)
	MOV (0)+,%5
	ADD (5)+,%0
	JMP @%5


; ENTRY POINT TO HLOOKUP
LA2:
	SUB @(6),%0
	MOV %7,@%0
	MOV (6)+,-(0)
	MOV %0,%5
	MOV %1,-(5)
	MOV %2,-(5)
	MOV %3,-(5)
	CLR -8.(0)
	MOV %0,%1
	CLC 
	ROR %1
	SUB #000004,%1
	MOV %1,%3
	MOV -4.(0),%2
	MOV #000005,%1
	JSR %7,@G+340.
	000012
	MOV %1,-10.(0)
	MOV -8.(0),-12.(0)
LA13:
	MOV -12.(0),%1
	MUL #000004,%1
	INC %1
	ADD -2.(0),%1
	MOV %1,-14.(0)
	MOV -14.(0),%1
	ASL %1
	CMP (1),-4.(0)
	BNE LA14
	MOV -14.(0),%1
	BR LA12
LA14:
	MOV -14.(0),%1
	ASL %1
	CMP (1),#177777
	BNE LA15
	TST -6.(0)
	BEQ LA16
	MOV -14.(0),%1
	BR LA12
LA16:
	CLR %1
	BR LA12
LA11:
	JMP MA11
LA17:
LA15:
	MOV -10.(0),%1
	ADD -12.(0),%1
	BIC #177740,%1
	MOV %1,-12.(0)
	CMP -8.(0),-12.(0)
	BNE LA13
	CLR %1
	BR LA12
LA12:
	MOV (0)+,%5
	ADD (5)+,%0
	JMP @%5


; ENTRY POINT TO HENUMERATE
LA3:
	SUB @(6),%0
	MOV %7,@%0
	MOV (6)+,-(0)
	MOV %0,%5
	MOV %1,-(5)
	MOV %2,-(5)
	MOV %3,-(5)
	MOV #000040,%1
	DEC %1
	CLR -8.(0)
	MOV %1,-10.(0)
	BR LA18
LA19:
	MOV -8.(0),%1
	MUL #000004,%1
	INC %1
	ADD -2.(0),%1
	ASL %1
	TST (1)
	BLT LA20
	MOV -8.(0),%1
	MUL #000004,%1
	INC %1
	ADD -2.(0),%1
	MOV -6.(0),%2
	JSR %7,@-4.(0)
	000014
LA20:
	INC -8.(0)
LA18:
	CMP -8.(0),-10.(0)
	BLE LA19
	MOV (0)+,%5
	ADD (5)+,%0
	JMP @%5


; ENTRY POINT TO HINSERT
LA4:
	SUB @(6),%0
	MOV %7,@%0
	MOV (6)+,-(0)
	MOV %0,%5
	MOV %1,-(5)
	MOV %2,-(5)
	MOV #177777,%3
	MOV -4.(0),%2
	MOV -2.(0),%1
	JSR %7,@G+342.
	000006
	MOV %1,-6.(0)
	TST -6.(0)
	BNE LA22
	MOV #004257,%2
	MOV G+414.,%1
	JSR %7,@G+212.
	000010
LA22:
	MOV #000004,%2
	MOV -6.(0),%1
	JSR %7,@G+202.
	000010
	MOV -6.(0),%1
	ASL %1
	MOV -4.(0),(1)
	MOV -6.(0),%1
	BR LA21
LA21:
	MOV (0)+,%5
	ADD (5)+,%0
	JMP @%5


; ENTRY POINT TO HDELETE
LA5:
	SUB @(6),%0
	MOV %7,@%0
	MOV (6)+,-(0)
	MOV %0,%5
	MOV %1,-(5)
	MOV %2,-(5)
	CLR %3
	MOV -4.(0),%2
	MOV -2.(0),%1
	JSR %7,@G+342.
	000006
	MOV %1,-6.(0)
	TST -6.(0)
	BEQ LA23
	CLR -8.(0)
	MOV -6.(0),%1
	ASL %1
	MOV #177777,(1)
LA24:
	MOV #177777,-8.(0)
	MOV #000040,%1
	DEC %1
	CLR -10.(0)
	MOV %1,-12.(0)
	BR LA25
LA26:
	MOV -10.(0),%1
	MUL #000004,%1
	INC %1
	ADD -2.(0),%1
	MOV %1,-6.(0)
	MOV -6.(0),%1
	ASL %1
	CMP (1),#177777
	BEQ LA27
	MOV -6.(0),%1
	ASL %1
	MOV #177777,%3
	MOV (1),%2
	MOV -2.(0),%1
	JSR %7,@G+342.
	000016
	MOV %1,-14.(0)
	MOV -14.(0),%1
	ASL %1
	CMP (1),#177777
	BNE LA28
	MOV #000004,%3
	MOV -6.(0),%2
	MOV -14.(0),%1
	JSR %7,@G+200.
	000020
	MOV -6.(0),%1
	ASL %1
	MOV #177777,(1)
	CLR -8.(0)
	BR LA29
LA28:
LA27:
	INC -10.(0)
LA25:
	CMP -10.(0),-12.(0)
	BLE LA26
LA29:
	TST -8.(0)
	BEQ LA24
LA23:
	MOV (0)+,%5
	ADD (5)+,%0
	JMP @%5


; ENTRY POINT TO GATEWAYLISTENER
LA6:
	SUB @(6),%0
	MOV %7,@%0
	MOV (6)+,-(0)
	CLR -2.(0)
	CLR -4.(0)
	MOV %0,%1
	CLC 
	ROR %1
	SUB #000002,%1
	CLR %2
	JSR %7,@G+244.
	000006
LA30:
	MOV %0,%1
	CLC 
	ROR %1
	SUB #000002,%1
	JSR %7,@G+246.
	000006
	TST %1
	BEQ LA31
	MOV G+414.,%3
	MOV LA8,%2
	MOV G+414.,%1
	JSR %7,@G+348.
	000006
	CLR -2.(0)
	MOV %0,%1
	CLC 
	ROR %1
	SUB #000002,%1
	MOV #000144,%2
	JSR %7,@G+244.
	000006
LA31:
	BR LA33
LA32:
	MOV G+418.,%1
	ADD #000013,%1
	JSR %7,@G+232.
	000006
	MOV %1,-6.(0)
	MOV -6.(0),%1
	ASL %1
	MOV 20.(1),%1
	BIC #177400,%1
	CMP %1,#000201
	BNE LA34
	MOV -6.(0),%1
	ASL %1
	MOV 32.(1),%1
	BIC #177400,%1
	MOV -6.(0),%2
	ASL %2
	MOV 6.(2),%2
	ASL %2
	CMP %1,4.(2)
	BEQ LA36
	MOV -6.(0),%1
	JSR %7,@LA10
	000010
	BR LA37
LA36:
	MOV -6.(0),%1
	JSR %7,@G+306.
	000010
LA37:
	BR LA35
LA34:
	MOV -6.(0),%1
	JSR %7,@G+334.
	000010
LA35:
LA33:
	MOV G+418.,%1
	ASL %1
	TST 22.(1)
	BNE LA32
	TST G+416.
	BEQ LA38
	TST -2.(0)
	BNE LA38
	MOV #177777,%2
	MOV G+418.,%1
	JSR %7,@G+304.
	000006
	MOV %1,-6.(0)
	TST -6.(0)
	BEQ LA39
	MOV -6.(0),%1
	ASL %1
	MOV 8.(1),%1
	BIS #040000,%1
	MOV -6.(0),%2
	ASL %2
	MOV %1,8.(2)
	MOV #000026,%3
	MOV #000200,%2
	MOV -6.(0),%1
	JSR %7,@G+314.
	000010
	CLR G+416.
	MOV #177777,-2.(0)
LA39:
LA38:
	JSR %7,@G+336.
	000006
	JMP LA30


; ENTRY POINT TO AGERTE
LA7:
	SUB @(6),%0
	MOV %7,@%0
	MOV (6)+,-(0)
	MOV %0,%5
	MOV %1,-(5)
	MOV %2,-(5)
	MOV -2.(0),%1
	ASL %1
	MOV 2.(1),%1
	BIC #100377,%1
	TST %1
	BEQ LA40
	MOV -2.(0),%1
	ADD #000003,%1
	JSR %7,@G+246.
	000006
	TST %1
	BEQ LA40
	MOV -2.(0),%1
	ASL %1
	TST 2.(1)
	BEQ LA41
	TST #100000
	BEQ LA41
	MOV -2.(0),%1
	ASL %1
	MOV 2.(1),%1
	BIC #100000,%1
	MOV -2.(0),%2
	ASL %2
	MOV %1,2.(2)
	MOV -2.(0),%1
	ADD #000003,%1
	MOV #001604,%2
	JSR %7,@G+244.
	000006

	BR LA42
LA41:
	MOV -2.(0),%1
	ASL %1
	MOV (1),%2
	MOV -4.(0),%1
	JSR %7,@G+346.
	000006
LA42:
LA40:
	MOV (0)+,%5
	ADD (5)+,%0
	JMP @%5


; ENTRY POINT TO PROCESSROUTEINFOREPLY
LA9:
	SUB @(6),%0
	MOV %7,@%0
	MOV (6)+,-(0)
	MOV %0,%5
	MOV %1,-(5)
	MOV -2.(0),%1
	ASL %1
	MOV 26.(1),%1
	CLRB %1
	SWAB %1
	MOV %1,-4.(0)
	MOV -2.(0),%1
	ASL %1
	MOV 32.(1),%1
	BIC #177400,%1
	MOV %1,-6.(0)
	TST -4.(0)
	BEQ LA43
	MOV #000021,%1
	ADD -2.(0),%1
	ASL %1
	TST (1)
	BNE LA43
	MOV #000021,%1
	INC %1
	ADD -2.(0),%1
	ASL %1
	CMP (1),#000002
	BNE LA43
	MOV -2.(0),%1
	ASL %1
	MOV 18.(1),%1
	SUB #000026,%1
	MOV #000001,-8.(0)
	MOV %1,-10.(0)
	BR LA44
LA45:
	MOV -8.(0),%1
	INC %1
	MOV %1,%3
	SXT %2
	DIV #000002,%2
	ADD #000023,%2
	ADD -2.(0),%2
	ASL %2
	MOV (2),%2
	BIC #177400,%2
	MOV %2,-16.(0)
	MOV #000017,%2
	MOV -16.(0),%1
	JSR %7,@G+364.
	000014
	INC %1
	MOV %1,-12.(0)
	CLR -14.(0)
	MOV -8.(0),%1
	DEC %1
	MOV %1,%3
	SXT %2
	DIV #000002,%2
	ADD #000023,%2
	ADD -2.(0),%2
	ASL %2
	MOV (2),%2
	CLRB %2
	SWAB %2
	MOV %2,-4.(0)
	CLR %3
	MOV -4.(0),%2
	MOV G+414.,%1
	JSR %7,@G+342.
	000020
	MOV %1,-14.(0)
	TST -14.(0)
	BNE LA46
	CMP -12.(0),#000017
	BLE LA48
	BR LA49
LA48:
	MOV -4.(0),%2

	MOV G+414.,%1
	JSR %7,@G+344.
	000020
	MOV %1,-14.(0)
	BR LA47
LA43:
	JMP MA43
LA46:
	MOV -14.(0),%1
	ASL %1
	MOV 2.(1),%1
	BIC #100377,%1
	TST %1
	BNE LA50
	BR LA49
LA50:
LA47:
	MOV -14.(0),%1
	ASL %1
	MOV 2.(1),%1
	BIC #077777,%1
	TST %1
	BEQ LA52
	MOV -2.(0),%1
	ASL %1
	MOV -14.(0),%2
	ASL %2
	CMP 6.(1),4.(2)
	BNE LA53
	MOV -14.(0),%1
	ASL %1
	MOV 2.(1),%1
	BIC #177400,%1
	CMP %1,-6.(0)
	BEQ LA52
LA53:
	MOV -14.(0),%1
	ASL %1
	MOV 2.(1),%1
	BR	LA999
LA44:
	JMP MA44
LA999:
	BIC #100377,%1
	CLRB %1
	SWAB %1
	CMP -12.(0),%1
	BGE LA51
LA52:
	MOV -14.(0),%1
	ASL %1
	MOV 2.(1),%1
	BIC #100377,%1
	CLRB %1
	SWAB %1
	CMP %1,-12.(0)
	BEQ LA54
	MOV #177777,G+412.
LA54:
	MOV -14.(0),%1
	ASL %1
	MOV 2.(1),%1
	BIC #077777,%1
	MOV -12.(0),%2
	SWAB %2
	CLRB %2
	ADD %2,%1
	ADD -6.(0),%1
	MOV -14.(0),%2
	ASL %2
	MOV %1,2.(2)
	MOV -2.(0),%1
	ASL %1
	MOV -14.(0),%2
	ASL %2
	MOV 6.(1),4.(2)
	CMP -12.(0),#000017
	BGT LA55
	MOV -14.(0),%1
	ASL %1
	MOV 2.(1),%1
	BIS #100000,%1
	BR	LA998
LA49:
	JMP MA49
LA998:
	MOV -14.(0),%2
	ASL %2
	MOV %1,2.(2)
	MOV -14.(0),%1
	ADD #000003,%1
	MOV #001604,%2
	JSR %7,@G+244.
	000020
LA55:
LA51:
MA49:
	ADD #000004,-8.(0)
MA44:
	CMP -8.(0),-10.(0)
	BGT LA997
	JMP LA45
LA997:
MA43:
	MOV -2.(0),%1
	JSR %7,@G+306.
	000010
	MOV (0)+,%5
	ADD (5)+,%0
	JMP @%5

MA11:

.CSECT GLOBAL

	.=G+330.
	LA1
	.=G+342.
	LA2
	.=G+348.
	LA3
	.=G+344.
	LA4
	.=G+346.
	LA5
	.=G+338.
	LA6

.CSECT

LA8:
	LA7
LA10:
	LA9


.END